package com.cskaoyan.operator;

/*
        1. 请用最有效率的方式写出计算2乘以8的结果
           2 * 8  = 2 * 2^3=2^4
           2 左移 3位

        2. 请自己实现两个整数变量的交换

 */
public class BitExercise {
    public static void main(String[] args) {

        // 第一道题，使用位运算(左移运算)
//        int a = 2;
//        System.out.println( a << 3);

        // 第二题 请自己实现两个整数变量的交换

        // 实现方式a一
        int a = 2;
        int b = 34;
        int tmp;

        //实现交换
        tmp = a;
        a = b;
        b = tmp;
        System.out.println("a: " + a);
        System.out.println("b: " + b);

        // 第二种实现方式
        a = 2;
        b = 34;
        a = a + b;
        // b = a + b -b  b = a
        b = a - b;
        //a = a + b -a  a = b
        a = a - b;
        System.out.println("a: " + a);
        System.out.println("b: " + b);

        // 第三种实现
        a = 2;
        b = 34;
        a = a ^ b;
        // b = a ^ (b ^ b)  b = a
        b = a ^ b;
        // a =  a ^ b ^ a  a = (a ^ a) ^ b  a = 0 ^ b   a = b
        a = a ^ b;
        System.out.println("a: " + a);
        System.out.println("b: " + b);

        // 第四种方式
        a = 2;
        b = 34;
        // a = (a + b) - a  a = b
        a = (a+b) - (b=a);
        System.out.println("a: " + a);
        System.out.println("b: " + b);



    }
}
